package cz.muni.fi.pa165.rentalofconstructionmachinery.dao;

import cz.muni.fi.pa165.rentalofconstructionmachinery.entity.Customer;
import java.util.List;

/**
 *
 * @author stefan.rakonjac
 */
public interface CustomerDAO {
    
    /**
     * Creates a new Customer. customerName may not be null at the
     * time of creation!
     * 
     * @param customer The Customer entity. Must not be null!
     */
    public void createCustomer(Customer customer);
    
    /**
     * Delete Customer.
     * 
     * @param customer The Customer entity. Must not be null!
     */
    public void deleteCustomer(Customer customer);
    
    /**
     * Update Customer.
     * 
     * @param customer The Customer entity. Must not be null!
     */
    public void updateCustomer(Customer customer);
    
    /**
     * List all existing Customers.
     * 
     * @return List of all existing Customers.
     */
    public List<Customer> getAllCustomers();
    
    /**
     * Get a particular Customer by its ID.
     * 
     * @param id Must not be null!
     * @return Null, if Customer with such ID does not exist.
     */
    public Customer getCustomerById(Long id);
}
